#pragma once


#include <string.h>
#include <stdio.h>








#ifdef  __ANDROID_API__
    #define _extern_ extern
#elif _WIN32
    #if defined (_exportbuild_)
    # define _extern_  _declspec(dllimport)
    # else
    # define _extern_  _declspec(dllimport)
 
    #endif
#else
    #define _extern_ extern
#endif  








#ifdef __cplusplus 
extern "C" {
#endif 
 
//void(*Log02)(int type, const char* tag, const char* currentTime, const char* message, const char* stackTrace);
	
extern void L01(int type, const char* msg);
extern void L01f(int type, const char* format, ...);
extern void L02(int type, const char* msg, const char* stackTrace);
extern void L03(int type, const char* tag, const char* currentTime, const char* msg, const char* stackTrace);
 

 
void _extern_ InitCSharpDelegate_log(void(*Log)(int type, const char* tag, const char* currentTime, const char* message, const char* stackTrace));

 
#define U3dLog(acStr) L01((int)3,(const char*)acStr);
#define U3dLogError(acStr) L01((int)0,(const char*)acStr);
#define U3dLogWarn(acStr)L01((int)2,(const char*)acStr);

#define U3dLogf(acStr,...) L01f((int)3,(const char*)acStr, ##__VA_ARGS__);
#define U3dLogErrorf(acStr,...)L01f((int)0,(const char*)acStr, ##__VA_ARGS__);
#define U3dLogWarnf(acStr,...)L01f((int)2,(const char*)acStr, ##__VA_ARGS__);

#define U3dLogInfo(acStr) L02((int)3, (const char*)acStr, stackTrace);
#define U3dLogErrorInfo(acStr)L02((int)0, (const char*)acStr, stackTrace);
#define U3dLogWarnInfo(acStr) L02((int)2, (const char*)acStr, stackTrace);

#define U3dLogTag(acStr)  L03((int)3,tag,currentTime, msg, stackTrace);
#define U3dLogErrorTag(acStr)  L03((int)0, tag,currentTime, msg,  stackTrace);
#define U3dLogWarnTag(acStr) L03((int)2, tag,currentTime, msg,  stackTrace);



#ifdef __cplusplus  
}
#endif
